package main

import (
	"fmt"
	"log"
	"os"
	"time"

	"github.com/rwcarlsen/goexif/exif"
)

func main() {
	// 视频文件路径
	videoPath := "../media/EBOD-185_Uncen.mp4"

	// 更新文件修改时间
	err = os.Chtimes(videoPath, tm, tm)
	if err != nil {
		log.Fatalf("无法更新文件时间: %v", err)
	}

	fmt.Printf("文件时间已更新为: %v\n", tm)
}

func ReaDate(file string) (time.Time, error) {
	// 读取视频文件
	f, err := os.Open(file)
	if err != nil {
		log.Printf("无法打开文件: %v", err)
		return time.Time{}, err
	}
	defer f.Close()

	// read file modify time
	fi, err := f.Stat()
	if err != nil {
		log.Printf("无法获取文件信息: %v", err)
		return time.Time{}, err
	}
	tmfile := fi.ModTime()

	// 解析EXIF信息
	x, err := exif.Decode(f)
	if err != nil {
		log.Printf("无法解析EXIF信息: %v", err)
		return time.Time{}, err
	}

	// 获取创建时间
	tmmedia, err := x.DateTime()
	if err != nil {
		log.Printf("无法获取创建时间: %v", err)
		return time.Time{}, err
	}

}

func UpdateFileTimeLinux(file string, tm time.Time) error {
	// 更新文件修改时间
	err := os.Chtimes(file, tm, tm)
	if err != nil {
		log.Printf("无法更新文件时间: %v", err)
		return err
	}

	fmt.Printf("文件时间已更新为: %v\n", tm)
	return nil
}

func UpdateFileTimeWin(file string, tm time.Time) error {
	// 更新文件修改时间
	err := os.Chtimes(file, tm, tm)
	if err != nil {
		log.Printf("无法更新文件时间: %v", err)
		return err
	}

	fmt.Printf("文件时间已更新为: %v\n", tm)
	return nil

}

// 遍历千个目录,几十万文件
// 核对媒体时间,如果于文件时间不符,更新文件时间
// 多平台运行,支持windows
